НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ УКРАЇНИ
“КИЇВСЬКИЙ ПОЛІТЕХНІЧНИЙ ІНСТИТУТ
імені ІГОРЯ СІКОРСЬКОГО”
ЗВІТ
з лабораторної роботи №5
з навчальної дисципліни “Програмування складних алгоритмів”
Тема:
ЛІНІЙНІ ОДНОЗВ’ЯЗНІ ТА ДВОЗВ’ЯЗНІ СПИСКИ
Варіант №12
Київ 2022
Мета:
Метою лабораторної роботи є ознайомитися з основами роботи з двозв’язним списком, однозв’язним.
Теоретична частина
Зв'язаний список — це лінійна структура даних, в якій елементи не зберігаються в суміжних місцях пам'яті. Елементи зв'язаного списку зв'язуються за допомогою вказівників. Простіше кажучи, зв'язаний список складається з вузлів, де кожен вузол містить поле даних і посилання (посилання) на наступний вузол у списку.
Типи зв'язаних списків
Однозв'язаний список - це найпростіший тип зв'язаного списку, в якому кожен вузол містить деякі дані і покажчик на наступний вузол того ж типу даних. Вузол, який містить покажчик на наступний вузол, означає, що вузол зберігає адресу наступного вузла в послідовності. Один зв'язаний список дозволяє передавати дані лише одним способом.
Двозв'язаний список - двосторонній зв'язаний список або двосторонній зв'язаний список - це більш складний тип зв'язаного списку, який містить покажчик на наступний, а також на попередній вузол у послідовності. Таким чином, він містить три частини: дані, покажчик на наступний вузол, і покажчик на попередній вузол. Це дозволило б нам переміщатися по списку і в протилежному напрямку.
Завдання:
1. Створити лінійний однозв’язний список, вивести його. Якщо в списку є елемент із заданим ключем, вилучити його, а попередній та настуні поміняти місцями. Виконати завдання згідно варіанту.
2. Створити двозв’язний список, вивести його. Якщо в списку є елемент із заданим ключем, вилучити його. Виконати завдання згідно варіанту з двозвязним списком.
Завдання до Варіанту_12
Задано натуральне число n, дійсні числа х(1)…х(n), (n>=2). Одержати послідовність х(1)-х(n) , x(2)-x(n),…,x(n-1)-x(n).
Результати виконання лабораторної роботи:
Код:
Main.cpp
//Лабораторна робота №5_ПСА
//ТР-15_Ткаченко_Майя, Варіант_12
#include <iostream>
#include "single-list.h"
#include "double-list.h"
using namespace std;
int main()
{
cout<<"\n====================>\n1. Створити лінійний однозв’язний список, вивести його. Якщо в списку є елемент із заданим ключем, вилучити його, а попередній та настуні поміняти місцями. Виконати завдання згідно варіанту.\n====================>\n";
cout<<"2. Створити двозв’язний вивести його. Якщо в списку елемент із заданим ключем, вилучити його. Виконати завдання згідно варіанту з двозвязним списком.\n====================>\n";
cout<<"Завдання до Варіанту_12\n====================>\nЗадано натуральне число n, дійсні числа х(1)…х(n), (n>=2). Одержати послідовність х(1)-х(n) , x(2)-x(n),…,x(n-1)-x(n).\n====================>\n";
int n;
cout << "\t<<---Виконання завдання №1--->>>\t" << endl;
cout << "========<<<Введіть значення для n (більше або дорівнює 2): ";
cin >> n;
List<int> Lst;
cout << "========>>>Початковий список:";
for (int i = 1; i < n; ++i)
{
Lst.PushBack(i - n);
}
Lst.ListOutput();
cout << "========<<<Введіть номер для видалення (попередній і наступний номер буде поміняно місцями): ";
int RemoveNumber;
cin >> RemoveNumber;
Lst.RemoveDataAndSwapPrevAndNextData(RemoveNumber);
cout << "========>>>Список після редагування:\n";
Lst.ListOutput();
cout << "\t<<---Виконання завдання №2--->>>\t" << endl;
DoubleList<int> DoubleLst;
cout << "========<<<Введіть значення для n (більше або дорівнює 2): ";
cin >> n;
cout << "========>>>Початковий список:";
for (int i = 1; i < n; ++i)
{
DoubleLst.PushBack(i - n);
}
DoubleLst.ListOutput();
return 0;
}
Single-list.h
#ifndef PCA_LR_5_SINGLE_LIST_H
#define PCA_LR_5_SINGLE_LIST_H
#include "string"
#include <fstream>
#include <iostream>
#include <vector>
using namespace std;
template <type...